package bean;

import java.io.Serializable;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.persistence.EntityManager;
import javax.validation.constraints.NotNull;

import modelo.DonoProjeto;
import modelo.Freelancer;
import modelo.Usuario;
import seguranca.Autenticador;
import util.Constantes;
import util.JSFUtil;
import dao.DonoProjetoDAO;
import dao.FreelancerDAO;
import dao.UsuarioDAO;

@ManagedBean
@SessionScoped
public class UsuarioSessaoBean implements Serializable{

	
	private String login;
	private String senha;
	private Usuario usuario;
	private String perfil;
	private EntityManager manager;	


	
	
	public String getLogin() {
		return login;
	}



	public void setLogin(String login) {
		this.login = login;
	}



	public String getSenha() {
		return senha;
	}



	public void setSenha(String senha) {
		this.senha = senha;
	}



	public Usuario getUsuario() {
		return usuario;
	}



	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}



	public String getPerfil() {
		return perfil;
	}



	public void setPerfil(String perfil) {
		this.perfil = perfil;
	}



	public String autenticar() {
		
		this.manager= JSFUtil.getEntityManager(); 
		String urlRetorno=null;
		Autenticador autenticador = null;
		
		
		if ("".equals(login)){
			JSFUtil.addMessage(FacesMessage.SEVERITY_ERROR,"Informe o login");
			return "/login/login";
		}
		
		if ("".equals(senha)){
			JSFUtil.addMessage(FacesMessage.SEVERITY_ERROR,"Informe a senha");
			return "/login/login";
		}
		
		if ("".equals(perfil)){
			JSFUtil.addMessage(FacesMessage.SEVERITY_ERROR,"Selecione um perfil");
			return "/login/login";
		}
		
		
		
		if (this.perfil.equals(Constantes.PERFIL_DONOPROJETO)) {
			this.usuario = new DonoProjeto();
			autenticador = new DonoProjetoDAO(this.manager);
			urlRetorno = "/donoprojeto/perfilDonoProjeto";
		}
		else if (this.perfil.equals(Constantes.PERFIL_FREELANCER)){
			this.usuario = new Freelancer();
                        urlRetorno = "/freelancer/perfilFreelancer";
			autenticador = new FreelancerDAO(this.manager);
		}
		
		this.usuario.setLogin(login);
		this.usuario.setSenha(senha);
		
	
		
		this.usuario = autenticador.efetuarLogin(this.usuario);
		
		if (usuario != null) {
			JSFUtil.addMessage("Login OK");
		}
		else {
			JSFUtil.addMessage(FacesMessage.SEVERITY_ERROR,"Login ou Senha estao incorretos");
			return "/login/login";
			
		}		
		return urlRetorno;	
	    
	}
	
	public String  getTitulo() {
		return "CADASTRO  DE "+this.perfil;
	}
	
	public void alterar() {
		
		
	}
	
	public String  logoff() {
		
		this.usuario = null;
		this.senha = null;
		this.perfil = null;
		this.login = null;
		
		return "/login/efetuarLogin";
	}
	

}
